package com.service.inte;

import com.entity.*;

import java.util.List;

public interface PartyOrgBranchServiceInte {

    /**
     * 查询所有党员
     * @return
     */
    List<Td_tblPartyOrgBranch> getAllBrnch();

    /**
     * 为党组织增加一个党员
     * @param branchId 党组织id
     * @return
     */
    int addMember(int branchId);

    /**
     * 查询所有下级组织成立申请
     * @param parentBranchId 组织id
     * @return
     */
    public List<Object[]> getNewBranchByParent(int parentBranchId,String branchName, int page);

    /**
     * 查询所有组织成立申请
     * @return
     */
    public List<Td_tblPartyOrgBranch> getNewBranch(int page);

    /**
     * 审批通过组织成立申请
     * @param branchId
     * @return
     */
    public int agreeSetUp(String userName,int branchId);

    /**
     * 查询所有不同意通过的组织
     * @param branchId
     * @return
     */
    public List<Td_tblPartyOrgBranch> getOppisitionSetUp(int branchId,int page);

    /**
     * 查询本组织和下属组织
     * @param branchId 组织id
     * @param branchName 组织名
     * @return
     */
    public List<Object[]> getByParent(int branchId,String branchName,int page);

    /**
     * 根据组织id查询该组织详情
     * @param branchId 组织id
     * @return
     */
    public Td_tblPartyOrgBranch getBybranchId(int branchId);

    /**
     * 查询某个党组织的书记
     * @param branchId 组织id
     * @return
     */
    public Td_tblPartyOrgDetail getSecretaryByBranch(int branchId);

    /**
     * 新建或修改党组织审批日志表
     * @param td_tblPartyOrgbranchApprove 实体类
     * @return
     */
    public int saveOrSaveApprove(Td_tblPartyOrgbranchApprove td_tblPartyOrgbranchApprove);

    /**
     * 新建或修改党组织记录
     * @param td_tblPartyOrgBranch
     * @return
     */
    public int saveOrUpdateBranch(Td_tblPartyOrgBranch td_tblPartyOrgBranch);

    /**
     * 查询本组织所审批的所有组织成立申请
     * @param branchId 本组织id
     * @param branchName 所查询组织名字
     * @param page 0=id     1=被审批组织id       2=不通过原因
     * @return
     */
    public List<Object[]> getBeBranchByFd_branchId(int branchId,String branchName, int page);

    /**
     * 查询用户所做出的组织处分记录
     * @param loginId 用户id
     * @param branchName 组织名
     * @param page 页码
     * @return  0=id 1=组织名   2=类型
     */
    public List<Object[]> getByLoginId(int loginId,String branchName,int page);

    /**
     * 根据id查询某条处分记录
     * @param id
     * @return
     */
    public Td_tblPartyOrgBranchPunish getByFd_id(int id);

    /**
     * 新建或修改党组织处分记录
     * @param td_tblPartyOrgBranchPunish
     * @return
     */
    public int saveOrUpdateBranchPunish(Td_tblPartyOrgBranchPunish td_tblPartyOrgBranchPunish);

    /**
     * 查询所有下级组织
     * @param parentId 父级组织id
     * @param branchName 下级组织名
     * @param page
     * @return
     */
    public List<Object[]> getByParentId(int parentId,String branchName,int page);

    /**
     * 查询用户所做出的组织处分记录
     * @param loginId 用户id
     * @param branchName 被处分组织名
     * @param page 页码
     * @return
     */
    public List<Object[]> getPunishByLoginId(int loginId,String branchName,int page);

    /**
     * 查询某条处分记录详情
     * @param punishId 处分记录id
     * @return
     */
    public Td_tblPartyOrgBranchPunish getPunishById(int punishId);

    /**
     * 根据组织id查询该组织的所有领导
     * @param branchId 组织id
     * @return
     */
    public List<String> getAllLeaderByBranchId(int branchId);

    /**
     * 最后一次换届改选日期和操作人姓名
     * @param branchId 组织id
     * @return 0=日期 1=姓名
     */
    public String[] getLastChangeLeader(int branchId);

    /**
     * 新建修改换届选举记录
     * @param partychangelog
     */
    public void saveOrUploadBranchChangeLog(TD_tblPartychangelog partychangelog);
}
